package com.lse_api.utils;

import lombok.Data;

import java.util.HashMap;
import java.util.Map;

@Data
public class Status {
	
	/**
	 * 默认返回码名称
	 */
	private static final String CODE= "code";
	/**
	 * 默认成功返回码
	 */
	private static final int CODE_SUCCESS = 200;
	/**
	 * 默认失败返回码
	 */
	private static final int CODE_ERROR = 500;
	
	/**
	 * 默认返回消息名称
	 */
	private static final String MSG= "msg";
	/**
	 * 默认成功返回消息
	 */
	private static final String MSG_SUCCESS = "请求成功!";
	/**
	 * 默认失败返回消息
	 */
	private static final String MSG_ERROR = "请求失败!";
	
	/**
	 * 默认返回状态名称
	 */
	private static final String SUCCESS= "success";
	/**
	 * 默认成功返回状态
	 */
	private static final boolean SUCCESS_SUCCESS = true;
	/**
	 * 默认失败返回状态
	 */
	private static final boolean SUCCESS_ERROR = false;
	
	/**
	 * 返回码
	 */
	private int code; 
	/**
	 * 返回消息
	 */
	private String msg;
	/**
	 * 返回数据
	 */
	private Object data;
	public int getCode() {
		return code;
	}
	public void setCode(int code) {
		this.code = code;
	}
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	public Object getData() {
		return data;
	}
	public void setData(Object data) {
		this.data = data;
	} 
	
	@Override
	public String toString() {
		return "MyResult [code=" + code + ", msg=" + msg + ", data=" + data + "]";
	}
	
	public Status(int code, String msg, Object data) {
        this.code = code;
        this.msg  = msg;
        this.data = data;
    }
	
	/**
	 * 请求成功
	 * code : 200
	 */
	public static Status success() {
		return new Status(CODE_SUCCESS, MSG_SUCCESS, null);
	}
	/**
	 * 请求成功
	 * code : 200 msg : 传入
	 */
	public static Status success(String msg) {
		return new Status(CODE_SUCCESS, msg, null) ;
	}
	/**
	 * 请求成功
	 * code : 200 data : 传入
	 */
	public static Status success(Object data) {
		return new Status(CODE_SUCCESS, MSG_SUCCESS, data);
	}
	/**
	 * 请求成功
	 * code : 200 data : 传入 msg : 传入
	 */
	public static Status success(String msg , Object data) {
		return new Status(CODE_SUCCESS, msg, data);
	}
	/**
	 * 请求成功
	 * code : 传入  data : 传入 msg : 传入
	 */
	public static Status success(int code, String msg, Object data) {
		return new Status(code, msg, data);
	}
	
	/**
	 * 请求失败
	 * code : 500 , msg : 请求失败
	 */
	public static Status error() {
		return new Status(CODE_ERROR, MSG_ERROR, null);
	}
	/**
	 * 请求失败
	 * code : 500 msg : 传入
	 */
	public static Status error(String msg) {
		return new Status(CODE_ERROR, msg, null) ;
	}
	/**
	 * 请求失败
	 * code : 500 data : 传入
	 */
	public static Status error(Object data) {
		return new Status(CODE_ERROR, MSG_ERROR, data);
	}
	/**
	 * 请求失败
	 * code : 500 data : 传入 msg : 传入
	 */
	public static Status error(String msg , Object data) {
		return new Status(CODE_ERROR, msg, data);
	}
	/**
	 * 请求失败
	 * code :传入  500 : 传入  data : 传入 msg : 传入
	 */
	public static Status error(int code, String msg, Object data) {
		return new Status(code, msg, data);
	}
	
	//=============返回成功or错误消息Map success:true code:"200" msg:"请求成功！"===========================
	/**
	 * 方法名称：getTrue
	 * 方法描述：成功消息 msg:请求成功！ code:"200" success：true
	 */
	public static Map<String, Object>  getTrue(){
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put(SUCCESS,SUCCESS_SUCCESS);
		map.put(CODE, CODE_SUCCESS);
		map.put(MSG, MSG_SUCCESS);
		return map;
	}
	/**
	 * 方法名称：getTrue
	 * 方法描述：请求成功 msg：传入 code：200 success：true
	 */
	public static Map<String, Object> getTrue(String msg){
		HashMap<String, Object> map = new HashMap<String , Object>() ;
		map.put(SUCCESS, SUCCESS_SUCCESS);
		map.put(CODE, CODE_SUCCESS);
		map.put(MSG, msg);
		return map ;
	}
	
	/**
	 * 方法名称：getFalse
	 * 方法描述：成功消息 msg:请求失败！ code:"500" success：false
	 */
	public static Map<String, Object>  getFalse(){
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put(SUCCESS,SUCCESS_ERROR);
		map.put(CODE, CODE_ERROR);
		map.put(MSG, MSG_ERROR);
		return map;
	}
	/**
	 * 方法名称：getFalse
	 * 方法描述：请求失败 msg：传入 code：500 success：false
	 */
	public static Map<String, Object> getFalse(String msg){
		HashMap<String, Object> map = new HashMap<String , Object>() ;
		map.put(SUCCESS, SUCCESS_ERROR);
		map.put(CODE, CODE_ERROR);
		map.put(MSG, msg);
		return map ;
	}
	
	/**
	 * 自定义信息
	 * getCode
	 */
	public static Map<String, Object> getCode(String msg , String code){
		HashMap<String, Object> map = new HashMap<String , Object>() ;
		map.put(CODE, code);
		map.put(MSG, msg);
		return map ;
	}
	/**
	 * 自定义信息
	 * getCustom
	 */
	public static Map<String, Object> getCustom(String msg , boolean success){
		HashMap<String, Object> map = new HashMap<String , Object>() ;
		map.put(SUCCESS, success);
		map.put(MSG, msg);
		if (success) {
			map.put(CODE, CODE_SUCCESS);
		}else {
			map.put(CODE, CODE_ERROR);
		}
		return map ;
	}
	
}
